#ifndef CHARTPARTS_H
#define CHARTPARTS_H

#include <QWidget>
#include <QColor>
#include <QPen>
#include <QBrush>
#include <QImage>
#include <QPolygon>

//Данные по участкам
#include "chartPartsItem.h"

//Класс расчета
#include "../trayToolKit/trayToolKit.h"

#include "defines.h"

class ChartParts : public QWidget {
 Q_OBJECT
public:
  ChartParts(TrayToolKit * new_ttk, QWidget *parent = 0);
  void draw(QPainter * painter);

  ChartPartsItem * item(int num);
  void setItem(int num, ChartPartsItem * item);

  void modifyItem(ChartPartsItem * item);

  void deleteNum(int num);
  void deleteItem(ChartPartsItem * item);

  double length();
  double inclination();
  double inclination_r();
  int    itemCount();

  double lenghtCurItem() { return items[insCurItem]->length(); };
  double fCurItem() 	 { return items[insCurItem]->F(); };
  double iCurItem() 	 { return items[insCurItem]->i(); };
  double irCurItem()     { return items[insCurItem]->ir(); };

  int curItem() { return insCurItem; };

public slots:
  void setCurItem(int num); 
  void changeL(double newVal)   { items[curItem()]->setLength(newVal);  update(); };
  void changeF(double newVal)   { items[curItem()]->setF(newVal);       update(); };
  void changeI(double newVal)   { items[curItem()]->setI(newVal);       update(); };
  void changeIr(double newVal)  { items[curItem()]->setIr(newVal);      update(); };

protected:
  ChartPartsItem * items[MAXPARTSITEMS];

  int insCurItem;

  int xParts[MAXPARTSITEMS];

  TrayToolKit * ttk;

  void resetItems();
  void paintEvent(QPaintEvent *event); 
  void mousePressEvent(QMouseEvent *event);

  //Убирает незначащие цифры после запятой
  double toPrec(double num) { double d = fmod(num, 0.01); return  num - d + double(rint(d * 1000))/1000; };

private:
  //Клетки
  void drawCells(QPainter * painter);
  //Участки
  void drawItems(QPainter * painter);

signals:
  void changedCurPart(int newPart);

}; //class ChartParts : public QGraphicsView

#endif
